var http = require('http');
var fs = require('fs');
var url = require('url');
var template = require('art-template');

var server = http.createServer();

var comments = [
	{
		name: '张三1',
		message: '今天天气不错！',
		dateTime: '2019-02-19',
	},
	{
		name: '张三2',
		message: '今天天气不错！',
		dateTime: '2019-02-19',
	},
	{
		name: '张三3',
		message: '今天天气不错！',
		dateTime: '2019-02-19',
	},
	{
		name: '张三4',
		message: '今天天气不错！',
		dateTime: '2019-02-19',
	},
	{
		name: '张三5',
		message: '今天天气不错！',
		dateTime: '2019-02-19',
	},
];

server.on('request', function (req, res) {
	//使用url.parse 方法将路径解析为一个对象，第二个参数为true表示直接将查询的字符串转为对象，可以通过 query属性来访问
	var parseObj = url.parse(req.url, true);
	//单独获取不包含查询字符串路径部分（不包含 ? 后面的内容）
	var pathname = parseObj.pathname;
	if (pathname === '/') {
		fs.readFile('./views/index.html', function (err, data) {
			if (err) {
				return res.end('404 Not Found.');
			}
			var htmlStr = template.render(data.toString(), {
				comments,
			});
			res.end(htmlStr);
		});
	} else if (pathname === '/post') {
		fs.readFile('./views/post.html', function (err, data) {
			if (err) {
				return res.end('404 Not Found.');
			}
			res.end(data);
		});
	} else if (pathname.indexOf('/public/') === 0) {
		//统一请求静态资源
		//请求路径是以 /public/ ,直接读取请求路径为文件路径
		fs.readFile('.' + pathname, function (err, data) {
			if (err) {
				return res.end('404 Not Found.');
			}
			res.end(data);
		});
	} else if (pathname === '/pinglun') {
		// console.log('收到表单请求了', parseObj.query);
		//1.获取表单提交的数据 parseObj.query
		//2.将当前日期添加到数据对象中，然后存放到评论数组中
		//3.重定向跳转到首页 / ，并且客户看到最新数据
		var comment = parseObj.query;
		comment.dateTime = '2020-03-22 17:11:23';
		comments.unshift(comment);
		//通过服务器让客户端重定向
		// 1.状态码设置为 302 临时重定向 statusCode
		// 2.在响应头中通过 Location 告诉客户端往哪重定向 setHeader
		res.statusCode = 302;
		res.setHeader('Location', '/');
		res.end();
	} else {
		//其它的都处理成404
		fs.readFile('./views/404.html', function (err, data) {
			if (err) {
				return res.end('404 Not Found.');
			}
			res.end(data);
		});
	}
});

server.listen(3000, function () {
	console.log('Server is running...');
});

// app.js任务:
//1. / index.html
//2. 开放 public 目录中的静态资源
//  当请求 /public/xxx 的时候，读取响应 /public 目录中的具体资源
//3. /post post.html
//4. /pinglun
//    4.1接收表单提交数据
//    4.2存储表单提交的数据
//    4.3让表单重定向到 /
//      statusCode
//      setHeader
